const visit = require('unist-util-visit')
const retext = require('retext')
const smartypants = require('retext-smartypants')

function check(parent) {
  if (parent.tagName === 'script') return false
  if (parent.tagName === 'style') return false
  return true
}

module.exports = function (options) {
  const processor = retext().use(smartypants, options)

  function transformer(tree) {
    visit(tree, 'text', (node, index, parent) => {
      if (check(parent)) node.value = String(processor.processSync(node.value))
    })
  }

  return transformer
}
